package com.ukadas.eduko.modelo;

import java.io.Serializable;
import java.util.Arrays;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import com.ukadas.eduko.modelo.estados.EstadoProyecto;
import com.ukadas.eduko.modelo.tipos.TipoProyecto;

@Entity
@Table(name="proyectos")
public class Proyecto implements Serializable{

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="id_proyecto")
	private int idProyecto;
	
	@Column(unique=true, length=50)
	private String proyecto;
	
	@ManyToOne
	@JoinColumn(name="id_tipo", referencedColumnName="id_tipo")
	private TipoProyecto tipo;
	
	@ManyToOne
	@JoinColumn(name="id_estado", referencedColumnName="id_estado")
	private EstadoProyecto estado;
	
	@Column(nullable=false)
	private boolean borrado=false;
	
	@Lob
	@Column(columnDefinition="blob")
    private byte[] icono;
	
	private Date comienzo;
	private Date fin;
	private int filtros;
	private int orden;
	private String ob;
	
	public Proyecto() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Proyecto(int idProyecto, String proyecto, TipoProyecto tipo,
			EstadoProyecto estado, boolean borrado, byte[] icono,
			Date comienzo, Date fin, int filtros, int orden, String ob) {
		super();
		this.idProyecto = idProyecto;
		this.proyecto = proyecto;
		this.tipo = tipo;
		this.estado = estado;
		this.borrado = borrado;
		this.icono = icono;
		this.comienzo = comienzo;
		this.fin = fin;
		this.filtros = filtros;
		this.orden = orden;
		this.ob = ob;
	}

	public int getIdProyecto() {
		return idProyecto;
	}

	public void setIdProyecto(int idProyecto) {
		this.idProyecto = idProyecto;
	}

	public String getProyecto() {
		return proyecto;
	}

	public void setProyecto(String proyecto) {
		this.proyecto = proyecto;
	}

	public TipoProyecto getTipo() {
		return tipo;
	}

	public void setTipo(TipoProyecto tipo) {
		this.tipo = tipo;
	}

	public EstadoProyecto getEstado() {
		return estado;
	}

	public void setEstado(EstadoProyecto estado) {
		this.estado = estado;
	}

	public boolean isBorrado() {
		return borrado;
	}

	public void setBorrado(boolean borrado) {
		this.borrado = borrado;
	}

	public byte[] getIcono() {
		return icono;
	}

	public void setIcono(byte[] icono) {
		this.icono = icono;
	}

	public Date getComienzo() {
		return comienzo;
	}

	public void setComienzo(Date comienzo) {
		this.comienzo = comienzo;
	}

	public Date getFin() {
		return fin;
	}

	public void setFin(Date fin) {
		this.fin = fin;
	}

	public int getGrupos() {
		return filtros;
	}

	public void setGrupos(int filtros) {
		this.filtros = filtros;
	}

	public int getOrden() {
		return orden;
	}

	public void setOrden(int orden) {
		this.orden = orden;
	}

	public String getOb() {
		return ob;
	}

	public void setOb(String ob) {
		this.ob = ob;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	@Override
	public String toString() {
		return "Proyecto [idProyecto=" + idProyecto + ", proyecto=" + proyecto
				+ ", tipo=" + tipo + ", estado=" + estado + ", borrado="
				+ borrado + ", icono=" + Arrays.toString(icono) + ", comienzo="
				+ comienzo + ", fin=" + fin + ", filtros=" + filtros + ", orden="
				+ orden + ", ob=" + ob + "]";
	}
	
}
